/*
@file http_server.h
@author Tony Pottier
@brief 定义HTTP服务器运行所需的所有功能。
包含HTTP侦听器的freeRTOS任务和所有必要的支持
用于处理请求，解码URL，提供文件等的功能。

@note http_server 没有wifi_manager任务就无法运行任务！
@see https://idyl.io
@see https://github.com/tonyp7/esp32-wifi-manager
*/

#ifndef HTTP_SERVER_H_INCLUDED
#define HTTP_SERVER_H_INCLUDED

#ifdef __cplusplus
extern "C" {
#endif

//http服务开启标志位
#define HTTP_SERVER_START_BIT_0	( 1 << 0 )

//http服务任务
void http_server(void *pvParameters);
//http服务连接服务
void http_server_netconn_serve(struct netconn *conn);
//http服务
void http_server_set_event_start();

/**
 * @brief 获取一个char *指向header_name的第一个出现，带有完整的http请求。
 *
 * 出于优化目的，不进行本地复制。然后memcpy可以与len协调使用来提取数据。
 *
 * @param request 完整的HTTP原始请求。
 * @param header_name 正在搜索的标头。
 * @param len 如果找到标头值的大小。
 * @return 指向标头值开头的指针。
 */
char* http_server_get_header(char *request, char *header_name, int *len);

#ifdef __cplusplus
}
#endif

#endif
